03-보안그룹설정
보안 그룹 설정
보안 그룹이란?
개념 이해
보안 그룹은 EC2 인스턴스의 가상 방화벽입니다.
- 인바운드 규칙: 외부에서 들어오는 트래픽 제어
- 아웃바운드 규칙: 내부에서 나가는 트래픽 제어
- 기본 정책: 모든 인바운드 차단, 모든 아웃바운드 허용
실습에서 만들 보안 그룹
- 웹 서버용 보안 그룹: 외부 접근 허용
- 데이터베이스용 보안 그룹: 웹 서버에서만 접근 허용
웹 서버 보안 그룹 생성
보안 그룹 생성 시작
- EC2 콘솔 → 왼쪽 메뉴 "Security Groups" 클릭
- "Create security group" 클릭
기본 정보 입력
Security group name: webapp-web-sg
Description: Security group for web server
VPC: webapp-vpc 선택
인바운드 규칙 설정
규칙 1 - SSH 접근:
- Type: SSH
- Protocol: TCP
- Port Range: 22
- Source: My IP (자동으로 현재 IP 입력됨)
- Description: SSH access from my IP
규칙 2 - HTTP 접근:
- Type: HTTP
- Protocol: TCP
- Port Range: 80
- Source: 0.0.0.0/0
- Description: HTTP access from anywhere
규칙 3 - Node.js 앱 접근:
- Type: Custom TCP
- Protocol: TCP
- Port Range: 3000
- Source: 0.0.0.0/0
- Description: Node.js app access
규칙 4 - Tomcat 접근 (심화 실습용):
- Type: Custom TCP
- Protocol: TCP
- Port Range: 8080
- Source: 0.0.0.0/0
- Description: Tomcat access
아웃바운드 규칙 확인
기본값 유지 (모든 트래픽 허용):
- Type: All traffic
- Protocol: All
- Port Range: All
- Destination: 0.0.0.0/0
웹 서버 보안 그룹 생성 완료
"Create security group" 클릭
데이터베이스 보안 그룹 생성
보안 그룹 생성 시작
"Create security group" 클릭
기본 정보 입력
Security group name: webapp-db-sg
Description: Security group for database
VPC: webapp-vpc 선택
인바운드 규칙 설정
규칙 1 - MySQL 접근:
- Type: MYSQL/Aurora
- Protocol: TCP
- Port Range: 3306
- Source: Custom → webapp-web-sg 선택
- Description: MySQL access from web servers
중요: Source에서 다른 보안 그룹을 선택하면, 해당 보안 그룹이 적용된 EC2에서만 접근이 가능합니다.
아웃바운드 규칙 확인
기본값 유지 (모든 트래픽 허용)
데이터베이스 보안 그룹 생성 완료
"Create security group" 클릭
심화 실습용 추가 보안 그룹 (선택사항)
Web/WAS 분리 아키텍처를 위한 추가 보안 그룹
WAS 서버 보안 그룹 생성
Security group name: webapp-was-sg
Description: Security group for WAS server
VPC: webapp-vpc 선택
인바운드 규칙:
- SSH (22): My IP에서 접근
- Tomcat (8080): webapp-web-sg에서 접근
- AJP (8009): webapp-web-sg에서 접근 (Apache 연동용)
보안 그룹 확인 및 검증
생성된 보안 그룹 목록 확인
Security Groups 대시보드에서 다음 항목들이 보이는지 확인:
-
webapp-web-sg
- VPC: webapp-vpc
- 인바운드 규칙: 4개 (SSH, HTTP, 3000, 8080)
-
webapp-db-sg
- VPC: webapp-vpc
- 인바운드 규칙: 1개 (MySQL 3306)
보안 그룹 규칙 상세 확인
webapp-web-sg 확인:
- webapp-web-sg 선택
- Inbound rules 탭 확인:
- SSH (22): 내 IP
- HTTP (80): 0.0.0.0/0
- Custom (3000): 0.0.0.0/0
- Custom (8080): 0.0.0.0/0
webapp-db-sg 확인:
- webapp-db-sg 선택
- Inbound rules 탭 확인:
- MYSQL/Aurora (3306): webapp-web-sg
보안 그룹 수정 (필요시)
규칙 추가 방법
- 수정할 보안 그룹 선택
- Inbound rules 또는 Outbound rules 탭
- Edit inbound rules 클릭
- Add rule 클릭하여 새 규칙 추가
- Save rules 클릭
규칙 삭제 방법
- 삭제할 규칙 오른쪽 Delete 버튼 클릭
- Save rules 클릭
보안 고려사항
SSH 접근 제한
- SSH는 반드시 내 IP로만 제한
- 공용 Wi-Fi 사용 시 IP가 바뀔 수 있음 주의
- 필요시 규칙 수정하여 새 IP 추가
포트 최소화 원칙
- 필요한 포트만 열기
- 불필요한 포트는 즉시 차단
- 0.0.0.0/0 사용은 최소한으로 제한
데이터베이스 보안
- DB는 절대 외부에서 직접 접근 불가
- 웹 서버 보안 그룹을 통해서만 접근
- 개별 IP 대신 보안 그룹 참조 사용
보안 그룹 완성 확인
다음 항목들을 최종 점검하세요:
네트워크 보안 설정 완료
보안 그룹 설정이 완료되었습니다!
현재까지 완성된 인프라:
webapp-vpc
├─ 서브넷 3개 (Public 1개, Private 2개)
├─ Internet Gateway 연결
├─ 라우팅 테이블 구성
└─ 보안 그룹 2개 (웹서버용, DB용)
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/03-기본실습-NodeJS/01-EC2인스턴스시작
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/Week2-전체가이드